home *** CD-ROM | disk | FTP | other *** search
- ; Micro Cornucopia issue #43
- ; Kaypro Column - Figure 6 SNAP.ASM
-
- ;***********************************************
- ;* *
- ;* THIS PROGRAM MAKES A COPY OF THE CP/M BIOS *
- ;* IN LOW RAM, SUITABLE FOR CAPTURE WITH SAVE. *
- ;* AFTER RUNNING SNAP, TYPE *
- ;* *
- ;* SAVE 18 NAME.COM *
- ;* *
- ;***********************************************
-
- TPA EQU 100H ;ADDRESS OF TPA
- TARGET EQU 8000H ;ADDRESS TO RELOCATE TO
- BIOS EQU 0EE00H ;ADDRESS OF BIOS
-
- ORG TPA
-
- SNAP: LXI H, IMAGE;POINT TO CODE TO MOVE
- LXI D, TARGET ;POINT TO TARGET
- MVI B, FIN - IMAGE ;SET BYTE COUNT
- LOOP1: MOV A, M ;GET A BYTE
- STAX D ;STORE IT
- INX H ;BUMP POINTERS
- INX D
- DCR B ;DECREMENT COUNT
- JNZ LOOP1 ;LOOP TILL DONE
-
- JMP TARGET ;JUMP TO RELOCATED CODE
-
- ;
- ; IMAGE OF CODE TO BE RELOCATED
- ;
-
- IMAGE: LXI H, BIOS ;POINT TO BIOS
- LXI D, TPA
- LXI B, - BIOS ;BYTE COUNT
- LOOP2: MOV A, M ;GET A BYTE
- STAX D ;STORE IT
- INX H ;BUMP POINTERS
- INX D
- DCX B ;DECREMENT COUNT
- MOV A, B ;SEE IF WE'RE DONE
- ORA C
-
- ; THE NEXT CONSTANT IS A PHONY JUMP ADDRESS TO
- ; FAKE ASM INTO DEALING WITH THE RELOCATION
-
- PHONY EQU LOOP2 + TARGET - IMAGE
- JNZ PHONY ;JMP TO RELOCATED LOOP
- RET
-
- FIN: DS 0 ;DUMMY FOR ADDR CALC
-
- END
-